/*
package com.lhn.bbs.aop;

import com.lhn.bbs.entity.SysLog;
import com.lhn.bbs.service.LogService;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;

*/
/**
 * @author zzh
 * @version 1.0
 * @data :2021-01-11 20:50
 *//*

@Component //表示交由spring管理
@Aspect  //表示为一个切面
public class LogAop {
    //注入业务接口层
    @Autowired
    private LogService logService;
    //定义一个切点
    @Pointcut("@annotation(com.qf.aop.MyLog)")
    public void piontCut() {
    }
    //设置环绕通知
    @Around(value = "piontCut()")  //将节点通过环绕通知的注解织在一起
    public Object around(ProceedingJoinPoint point) {
        try {
            //入方法之前处理的事情
            //通过切点获取方法的签名对象
            MethodSignature signature = (MethodSignature) point.getSignature();
            //从签名对象中获取方法对象,再从方法对象中获取方法含有的特定注解
            MyLog annotation = signature.getMethod().getAnnotation(MyLog.class);
            String name = "";
            if (annotation != null) {
                //如果注解的方法名不为空则获取方法注解的内容
                name = annotation.name();
            }
            //记录用户访问的日志记录
            //创建日志对象
            SysLog sysLog = new SysLog();
            sysLog.setUserId(1); //用户id
            sysLog.setUserAction(name); //用户访问动作
            sysLog.setCreateTime(new Date()); //用户访问时间
            //将用户访问对象添加到数据库中
            logService.addLogInfo(sysLog);
            return point.proceed();  //原有的拦截逻辑
            //出方法之后处理的事情
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }
        return null;
    }
}
*/
